1. Field of the Invention
The present invention relates to motion picture, and more specifically, to rendering a 3-D scene geometry to a 2-D image representation for a motion picture.
2. Background
Scenegraphs are structured hierarchies of data that contain all information necessary to render a 3-D scene. For example, a common method of using scenegraphs includes representing coordinate transformations at intermediate locations in a tree, with a renderable geometry at leaf locations of the tree. Computer graphics packages typically use some versions of a scenegraph representation. For example, a computer graphics package may include a static scenegraph representation that an artist directly edits to build up the desired result. A more procedural approach to scenegraph construction can be found in other computer graphics packages where blocks of data (such as point lists) can be manipulated by nodes.
Traditional 3-D software packages require a complete scenegraph description to be loaded into memory to be manipulated or processed. Modifications to the scenegraph are either performed directly on the loaded geometry or on additional copies of the geometry in memory. However, when working with scenes of increasing complexity (e.g. New York City), it may not be practical to load the entire scene into memory given the limitations of the memory. Thus, a common method for reducing the memory usage in an interactive session is to segment the scene into workable pieces, load and manipulate only selected pieces at a time, and cache the modified results to files on a disk. These individual geometry caches are then loaded as needed when rendering the 3-D scene geometry to a 2-D image representation. Further, it is common to employ “instancing” (i.e., sharing the underlying data representation amongst multiple identical objects in a scene) to reduce the time spent by an artist to create geometry descriptions and to reduce the memory needed to render the geometry. This technique is primarily used for objects such as trees, grass, or buildings which can be represented as repeated geometry without appearing unduly repetitive. For example, if a building in a city has hundreds of identical windows, an individual window might be created and set up once, and then “instanced” at every window location on the building, which itself might be instanced multiple times in the city. This single window description is cached on a disk and referenced in higher-level scene descriptions of the building and city. The tradeoff with these methods is that it becomes increasingly difficult to manage these individual scene building blocks. For example, to implement an artistic decision to modify a single window using the traditional methods described above, it is necessary to first create a duplicate geometry cache for the modified window and to then update any references to the window in multiple hierarchical layers of the scene description. It is also potentially wasteful to duplicate the full description of an object when only a single property needs to change, such as its color.